#define DEBUG
#include <cstdio>

using namespace std;

const int maxn=500000;

int main() {
#ifdef DEBUG
  freopen("2.in", "r", stdin);
  freopen("2.out", "w", stdout);
#endif

  static int x[maxn+1], temp[maxn+1];
  int n, c, q;
  scanf("%d %d", &n, &c);
  for (int i=1; i<=n; i++) {
    scanf("%d", x+i);
  }

  scanf("%d", &q);
  for (int i=1; i<=q; i++) {
    char c;
    scanf(" %c", &c);
    if (c=='R') {
      int k;
      scanf("%d", &k);
      for (int i=1; i<=n; i++) {
	temp[(i+k-1)%n+1]=x[i];
      }
      for (int i=1; i<=n; i++) {
	x[i]=temp[i];
      }
    } else if (c=='F') {
      for (int i=2, j=n; i<j; i++, j--) {
	temp[0]=x[i], x[i]=x[j], x[j]=temp[0];
      }
    } else if (c=='S') {
      int i, j;
      scanf("%d %d", &i, &j);
      temp[0]=x[i], x[i]=x[j], x[j]=temp[0];
    } else if (c=='P') {
      int u, v, w;
      scanf("%d %d %d", &u, &v, &w);
      if (u<=v) {
	for (int i=u; i<=v; i++) {
	  x[i]=w;
	}
      } else {
	for (int i=u; i<=n; i++) {
	  x[i]=w;
	}
	for (int i=1; i<=v; i++) {
	  x[i]=w;
	}
      }
    } else if (c=='C') {
      scanf("%c", &c);
      int ans=1;
      for (int i=0; i<=c; i++) {
	temp[i]=0;
      }
      int u=1, v=n;
      if (c=='S') {
	scanf("%d %d", &u, &v);
      }
      if (u<=v) {
	for (int i=u+1; i<=v; i++) {
	  if (x[i]!=x[i-1]) {
	    ans++;
	  }
	}
      } else {
	for (int i=u+1; i<=n; i++) {
	  if (x[i]!=x[i-1]) {
	    ans++;
	  }
	}
	if (x[1]!=x[n]) {
	  ans++;
	}
	for (int i=2; i<=v; i++) {
	  if (x[i]!=x[i-1]) {
	    ans++;
	  }
	}
      }
      if (v%n+1==u && ans>1 && x[u]==x[v]) {
	ans--;
      }
      printf("%d\n", ans);
    }
  }

  fclose(stdin);
  fclose(stdout);
  return 0;
}
